package array;

public class TwoDimensionArray {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//OneDimension
		int[] a ;//在main方法栈区
		a = new int[]{1,2,3,4};//静态初始化
		a = new int[4];//动态初始化
		//两种初始化方式只能用其一，并且必须用其一
		//初始化本质是：设定堆内存中的数组变量长度，并写入初值
		//而a只是一个引用
		
		//TwoDimension
		int[][] Arrs;//声明了一个引用变量
		Arrs = new int[4][];//在堆中开辟了一块空间，存放了一个一维数组，数组长度是4，数组中放的是对int[]类型对象的引用
		System.out.println(Arrs.length);// .length返回系统在堆内存中为Arrs变量开辟的连续的存储空间的长度
		for(int i = 0; i<Arrs.length ; i++)
			System.out.println(Arrs[i]);//初始赋值都是null
		
		Arrs[0] = new int[2];//给第一个引用赋一个有两个对象的数组
		Arrs[0][1] = 0;
		for(int i = 0 ; i<Arrs[0].length ; i++)//.length返回的是系统为第一个引用在堆内存中开辟的连续空间长度
			System.out.println(Arrs[0][i]);
		//这样一想，其实本身在内存中没有像表一样的二维数组，而是在一维数组中存放一维数组的引用
		
	}
}
